package com.chhuang.core.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

/**
 * 
 * @author CHHUANG
 *
 */
public class SysInterceptor implements  HandlerInterceptor{
	
	/**
	 * 执行在进入handler之前
	 * 可以用于身份认证，身份授权
	 * 比如身份认证，如果用户没有登录，就需要此方法拦截不再向下执行
	 * return true表示放行
	 */
	@Override
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
		return true;
	}
	
	/**
	 * 执行在hander方法之后，返回modelandview之前
	 * 应用场景从modelandview出发：将这些公用的模型数据在这里传到视图，也可以在这里统一视图
	 * 只要有一个拦截器的preHandle不放行，就不会执行postHandle
	 */
	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		
	}
	
	/**
	 * 执行在hnader完成之后
	 * 应用场景：可以用于统一异常处理，统一日志处理
	 * 统一日志处理拦截器，在springmvc配置中，一定要放在其它拦截器的最后一个位置
	 * 而且preHandle方法一定要放行
	 */
	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		
	}
}
